<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Monkey PHP Framework</title>
<link type="text/css" href="statics/css/base.css" rel="stylesheet" />
<script type="text/javascript" src="statics/js/jquery.min.js"></script>
<!--prettify-->
<link type="text/css" href="statics/css/prettify.css" rel="stylesheet" />
<script type="text/javascript" src="statics/js/prettify.js"></script>
<script type="text/javascript" src="statics/js/html5.js"></script>
<script type="text/javascript" src="statics/js/monkey.js"></script>
</head>

<body>
<!--page_wrap:start-->
<div class="page_wrap">

<p>
<h2>2.13  Select助手\Monkey\Database\SqlHelper\Select</h2><br/>

<b>公开方法：</b><br />
<table class="table table_bordered table_striped">
    <thead>
        <tr>
            <th>方法名</th>
            <th>参数</th>
            <th>说明</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <th>_reset</th>
            <td><b>string $linkKey </b> 连接键名<br/>
            <b>\Monkey\Database\QueryHelper\_Interface &$queryHelper</b> 数据库查询助手
            </td>
            <td width=500 >重设助手。返回Select助手对象</td>
        </tr>
        <tr>
            <th>into</th>
            <td><b>string $table</b> 插入的表名，也可以是新表名</td>
            <td>将select语句选出的结果集插入到另一个表中。返回当前助手对象</td>
        </tr>
        <tr>
            <th>distinct</th>
            <td><b>bool $distinct=TRUE</b> 是否去掉重复。TRUE去掉；FALSE不去</td>
            <td>去掉重复结果。返回当前助手对象</td>
        </tr>
        <tr>
            <th>field</th>
            <td><b>string|array $fields</b> 字段名列表，如'field1,field2,field3,...' 或 array('f1','f2',$alias=>$f3,...)<br/>
            <pre class="prettyprint linenums">
/* 每个字段名前可以单独加表名或表别名（也可不加），如'{:表名:}.field' 或 '表别名.field' 或 'field'
 * 如字段名可能与关键字冲突，请加上[:冲突:]，如'[:可能冲突的字段名:]' 或 '{:表名:}.[:可能冲突的字段名:]' 或：'表别名.[:可能冲突的字段名:]'
 * 字段名还可以是一个表达式，如 'count( * ) as total'
 * 字段名也可以设置别名，如 'count( * ) as total' 或 array('uid', 'count( uid ) as uid_num') 或用数组的键名代表别名，如 array('u.uid', 'uid_num'=>'count( u.uid )')
</pre><br/>
            <b>string $table</b> 表名或表别名，例如“{:表名:}”和“表别名”<br/>
<pre class="prettyprint linenums">
/* 第二个参数是为了统一加上表名（或表别名），从而简化书写形式，但有很多限制：
 * 1、使用此参数时，第一个参数中就不能单独加表名或表别名，否则造成加重复了。
 * 2、第一个中使用了sql内部函数（如count等）也不能统一加表名（或表别名）。
 * 3、当最终的sql语句只操作一张表时，可以省略表名。
</pre><br/>
            </td>
            <td>添加Select语段，不使用此方法相当于选择主表中的所有字段。返回当前助手对象。<br/>
            用法说明：<br/>
<pre class="prettyprint linenums">
/*
 * $select->field('f1,f2,f3');
 * $select->field( array('f1','f2','fAlias'=>'f3') );
 * $select->field('{:user:}.f1,uAlias.f2,{:login:}.f3');
 * $select->field('u.[:name:],u.id,{:login:}.f3');
 * $select->field('count( * ) as total');
 * $select->field(array('u.id','numID'=>'count( u.id )'));
 * $select->field('u.[:name:],u.id,u.f3');
 * $select->field('[:name:],id,f3','u');
 * $select->field('[:name:],id,f3','{:user:}');
 * 还有一些不常用的方式，请参考源码
</pre>
            </td>
        </tr>
        <tr>
            <th>table</th>
            <td><b>string $table</b> 表名(不能带前缀，程序自动加入前缀）<br/>
            <b>string $alias</b> 别名
            </td>
            <td>设置要选择的表名。返回当前助手对象。</td>
        </tr>
        <tr>
            <th>join</th>
            <td><b>array $table1</b> 连接表名，array('table'=>name,'alias'=>aliasName) 可以只有别名或只有表名<br/>
            <b>string $type</b> 连接类型 INNER|LEFT|RIGHT|FULL<br/>
            <b>array $table2</b> 连接表名，array('table'=>name,'alias'=>alias) 可以只有别名或只有表名<br/>
            <b>string $onField</b> 连接查询条件
            </td>
            <td>添加join语段。返回当前助手对象。</td>
        </tr>
        <tr>
            <th>where</th>
            <td>string $conditions 查询条件。当条件中含有可能注入的内容，将这个内容复制到第二个数组参数中，并用“&lt;对应的键名&gt;”形式，替换原条件中的内容<br/>
            null|string|array $params 查询条件中可能注入的内容的替换列表，为字符串时表示所有内容都替换成这个。替换前，程序会自动过滤危险字符。
            </td>
            <td>添加where语段。返回当前助手对象。</td>
        </tr>
        <tr>
            <th>groupby</th>
            <td>string $field 字段名<br/>
            bool $isASC 是否为升序
            </td>
            <td>添加 group by 语段。返回当前助手对象。</td>
        </tr>
        <tr>
            <th>having</th>
            <td>string $having having条件<br/>
            null|string|array $params having条件中可能注入的内容的替换列表，为字符串时表示所有内容都替换成这个。替换前，程序会自动过滤危险字符。
            </td>
            <td>添加 having 语段。返回当前助手对象。</td>
        </tr>
        <tr>
            <th>orderby</th>
            <td>string $field 字段名<br/>
            bool $isASC 是否为升序
            </td>
            <td>添加 orderby 语段。返回当前助手对象。</td>
        </tr>
        <tr>
            <th>limit</th>
            <td>integer $length 选择记录条数<br/>
            integer $start 起始位置，默认为0（从第一条数据开始选择）
            </td>
            <td>设置 Limit 语段。返回当前助手对象。</td>
        </tr>
        <tr>
            <th>top</th>
            <td>integer $top 选择记录条数</td>
            <td>设置 top 语段，Limit 0 的快捷方式。返回当前助手对象。</td>
        </tr>
        <tr>
            <th>getSql</th>
            <td>无</td>
            <td>生成sql语句。返回string。</td>
        </tr>
        <tr>
            <th>getSqlOfCount</th>
            <td>string $columnName 存放统计结果的字段名，默认为'_nums_'。</td>
            <td>生成统计用的sql语句。返回string。</td>
        </tr>
        <tr>
            <th>exec</th>
            <td>无</td>
            <td>执行生成的sql语句。返回\Monkey\Database\Driver\_Interface型对象。</td>
        </tr>
        <tr>
            <th>execOfCount</th>
            <td>无</td>
            <td>执行生成的sql统计语句。成功返回int，失败返回array（通用通知）。</td>
        </tr>
        <tr>
            <th>cache</th>
            <td>int $expire 缓存时间，意义见缓存类说明<br/>
            null|string|\Monkey\Cache\_Interface $cache 缓存类型或缓存对象，为空时生成默认的缓存对象
            </td>
            <td>通过缓存执行生成的sql语句。返回array 二维数据，对应数据库中的行和列。</td>
        </tr>
    </tbody>
</table>
</p>


</div>
<!--page_wrap:end-->
</body>
</html>